package org.example.springboot3.controller;

import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.example.springboot3.common.Result;
import org.example.springboot3.entity.Admin;
import org.example.springboot3.service.AdminService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin")
public class AdminController {

    @Resource
    private AdminService adminService;

    //浏览器新增json数据给后端
    @PostMapping("/add")
    public Result add(@RequestBody Admin admin) {
        adminService.add(admin);
        return Result.success();
    }

    //删除单个数据
    @DeleteMapping("/deleteById/{id}")
    public Result deleteById(@PathVariable Integer id) {
        adminService.deleteById(id);
        return Result.success();
    }
    //删除多个数据
    @DeleteMapping("/deleteBatch")
    public Result deleteBatch(@RequestBody List<Integer> ids) {
        adminService.deleteBatch(ids);
        return Result.success();
    }

    //更新数据
    @PutMapping ("/update")
    public Result updata(@RequestBody Admin admin) {
        adminService.updata(admin);//@RequestBody Admin admin：从请求体中获取 Admin 对象。
        return Result.success();
    }

    //查询所有数据
   @GetMapping("/selectALL")
    public Result selectAll(Admin admin){
       List<Admin> list = adminService.selectALL(admin);
        return Result.success(list);
   }

   //路径传参@PathVariable 查询单个数据
   @GetMapping("/selectById/{id}")//@GetMapping("/selectById/{id}")：处理 GET 请求，请求路径为 /admin/selectById/{id}，其中 {id} 是路径变量。
   public Result selectById(@PathVariable Integer id) {//@PathVariable Integer id：从 URL 路径中获取 id 参数。
      Admin admin = adminService.selectById(id);//调用 adminService.selectById(id) 方法根据 id 查询对应的 Admin 数据。
       return Result.success(admin);//返回包含查询结果的成功响应结果。
   }

   //分页查询
   @GetMapping("/selectPage")
    public Result selectPage(Admin admin,
            @RequestParam ( defaultValue = "1") Integer pageNum,//从请求参数中获取页码，默认值为 1。
            @RequestParam (defaultValue = "10")Integer pageSize) {
       PageInfo<Admin> pageInfo = adminService.selectPage(admin,pageNum,pageSize);
        return Result.success(pageInfo);
    }

}//

